VPC Lambdaの一覧を取得するために実行したlist-functionsの結果にVpcConfigが含まれない時と含まれるけど中身が空の時がある
こんにちは、岩城です。
以下のようなコマンドからVPC Lambdaの一覧を取得したところ、VPCIDが表示されるもの、Noneが表示されるもの、何も表示されない結果が返ってきました。 なぜこのような結果の違いになるのか調べたの共有します。
$ aws lambda list-functions --query 'Functions[].{FunctionName:FunctionName,VPCID:VpcConfig.VpcId}' --output table --------------------------------------------------------------------- | ListFunctions | +-----------------------------------------+-------------------------+ | FunctionName | VPCID | +-----------------------------------------+-------------------------+ | test-function-1 | vpc-xxxxxxxxxxxxxxxxx | | test-function-2 | None | | test-function-3 | | +-----------------------------------------+-------------------------+
結論
まずは結論です。
- VPCIDが表示される
- VPC Lambdaであることを示す
VpcConfig
にVPCやサブネットなどの情報が記録されている
- None表示される
- VPC Lambdaではないことを示す
- 過去に一度でもVPC Lambdaとして設定したことがなく、
VpcConfig
パラメーターが存在しない
- 何も表示されない
- VPC Lambdaではないことを示す
- 過去に一度でもVPC Lambdaとして設定したことがあり、
VpcConfig
パラメーターが存在する
確認してみた
VPCIDが表示されるパターン
VpcConfig
を確認するとサブネットIDやVPCIDが記録されていますので、VPC Lambdaであることがわかります。
$ aws lambda get-function --function-name vpcconfig-test-1 { "Configuration": { "FunctionName": "vpcconfig-test-1", "FunctionArn": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:vpcconfig-test-1", "Runtime": "nodejs16.x", "Role": "arn:aws:iam::xxxxxxxxxxxx:role/service-role/vpcconfig-test-role-avjihgst", "Handler": "index.handler", "CodeSize": 304, "Description": "", "Timeout": 3, "MemorySize": 128, "LastModified": "2022-05-31T07:50:40.000+0000", "CodeSha256": "BoZeaw/DbJn9WCuwWo55uYOBIKfOwod6Mg372ZVNbSI=", "Version": "$LATEST", "VpcConfig": { "SubnetIds": [ "subnet-0e631f5d739936811", "subnet-08a27acc1efdceff9" ], "SecurityGroupIds": [ "sg-06e39c4a3dc758c77" ], "VpcId": "vpc-0a7d3950c035d3947" }, "TracingConfig": { "Mode": "PassThrough" }, "RevisionId": "7ac91128-6861-4352-9f87-df6dd5f98172", "State": "Active", "LastUpdateStatus": "InProgress", "LastUpdateStatusReason": "The function is being created.", "LastUpdateStatusReasonCode": "Creating", "PackageType": "Zip", "Architectures": [ "x86_64" ] } }
Noneが表示されるパターン
非VPC Lambdaで関数を新規作成した時点では、VpcConfig
は存在しません。当然ですがVPC Lambdaではありません。
$ aws lambda get-function --function-name vpcconfig-test-2 { "Configuration": { "FunctionName": "vpcconfig-test-2", "FunctionArn": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:vpcconfig-test-2", "Runtime": "nodejs16.x", "Role": "arn:aws:iam::xxxxxxxxxxxx:role/service-role/vpcconfig-test-2-role-jjufgkdn", "Handler": "index.handler", "CodeSize": 304, "Description": "", "Timeout": 3, "MemorySize": 128, "LastModified": "2022-05-31T07:41:53.140+0000", "CodeSha256": "BoZeaw/DbJn9WCuwWo55uYOBIKfOwod6Mg372ZVNbSI=", "Version": "$LATEST", "TracingConfig": { "Mode": "PassThrough" }, "RevisionId": "ffbb1f9c-97a1-419e-b94d-53efa1ad42c2", "State": "Active", "LastUpdateStatus": "Successful", "PackageType": "Zip", "Architectures": [ "x86_64" ] } }
何も表示されないパターン
一度VPC Lambdaに設定した後に非VPC Lambdaに設定変更した場合、VpcConfig
は存在しますが中身は空となります。
$ aws lambda get-function --function-name vpcconfig-test-3 { "Configuration": { "FunctionName": "vpcconfig-test-3", "FunctionArn": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:vpcconfig-test-3", "Runtime": "nodejs16.x", "Role": "arn:aws:iam::xxxxxxxxxxxx:role/service-role/vpcconfig-test-role-avjihgst", "Handler": "index.handler", "CodeSize": 304, "Description": "", "Timeout": 3, "MemorySize": 128, "LastModified": "2022-05-31T07:48:44.000+0000", "CodeSha256": "BoZeaw/DbJn9WCuwWo55uYOBIKfOwod6Mg372ZVNbSI=", "Version": "$LATEST", "VpcConfig": { "SubnetIds": [], "SecurityGroupIds": [], "VpcId": "" }, "TracingConfig": { "Mode": "PassThrough" }, "RevisionId": "ac2861ee-eb8c-4fe3-b493-73731de431c2", "State": "Active", "LastUpdateStatus": "InProgress", "LastUpdateStatusReason": "The function is being created.", "LastUpdateStatusReasonCode": "Creating", "PackageType": "Zip", "Architectures": [ "x86_64" ] } }
おわりに
分かってしまえば簡単なことでしたが、また一つ疑問が解消されたので良かったです。
本エントリがどなたかのお役に立てれば幸いです。